 SUB inputMc()
    dim n as ubyte
    dim estado as ubyte
    IF reachedTime(1,3) THEN    '11
    
            if TipoControl <> 2 then
               n = 0
            else
               n = in(31)
            end if
             
            IF mCO =5 then
                
                'frameImage = frameImage +1
                mCOa = mCO
                mCO = 1
                frameImage = 0
                'IF frameImage = 4 then
                    
                    'frameImage= 0
                'END IF
              'Comienzo el if con el giro arriba , de tal forma que si esta
              'girando no le da pelota a ninguna pulsacion hasta que termina de girar
            
            ELSE IF Multikeys(Teclas(DERECHA)) or n bAND %1 then
                inputP()                                                                          
            ELSE IF Multikeys(Teclas(IZQUIERDA)) or n bAND %10  then
                inputO()             
            ELSE IF MultiKeys(Teclas(ARRIBA)) or n bAND %1000 then
               inputQ()                 
            ELSE IF MultiKeys(Teclas(ABAJO)) or n bAND %100 then
               inputA()      
            ELSE IF MultiKeys(Teclas(INTERAC)) or n bAND %10000 then
               inputU() 
            ELSE IF MultiKeys(Teclas(SOLTAR)) then
               inputD()          
            ELSE IF MultiKeys(Teclas(INFO)) then
               'WHILE INKEY$<>"":WEND
              
               inputT()  
               
                
              
               
           ELSE 
                IF mCO <> 0 then
                    mCOa = mCO
                    mCO = 0
                    yaImp = 0
                    frameImage = 0
                END IF           
           END IF 
    END IF 'end timer

END SUB
SUB inputP()        
                       
    IF mCO <> 4 then
          frameImage = 0
          cambioOrientacion = 1
          IF mCO = 3
             opposite = 1
          END IF
    END IF
     mCOa = mCO
     mCO = 4
    
    'si al menos una parte del personaje esta fuera de la pantalla no va hacia la derecha
    if y+6 <= 23 then
     IF NOT alcanzoUnLimite() then
        yaImp = 0
        frameImage = frameImage +1
        IF cambioOrientacion <> 1 then
        
            IF frameImage = 4 then
                x = x +2
            ELSE IF frameImage =2 then
                x = x
            ELSE
                x = x + 1
            END IF
        END IF                                     
     END IF
    end if
    IF x > 30                
            x = -3
            xp = xp +1
            cargaPantalla(0)
    END if 

END SUB
SUB inputO()
    
    'IF x>0 THEN  'LIMITE IZQUIERDO PASAR A ARCHIVO DE LIMITES POR PANTALLA 
    IF mCO <> 3 then
        frameImage = 0
        cambioOrientacion = 1
        IF mCO = 4
            opposite = 1
        END IF
    END IF
    mCOa = mCO
    mCO = 3'
    'si al menos una parte del personaje esta fuera de la pantalla no va hacia la izquierda
    if y+6 <= 23 then 
    'chequea los limites que estan cargados para esa pantalla
     IF NOT alcanzoUnLimite() then
        
        yaImp = 0
        'orientacion del m.c a la izq                         
        frameImage = frameImage +1
        
            IF frameImage = 1 then
                IF cambioOrientacion <> 1 then
                    x = x -2
                ELSE
                    x = x -1
                END IF
            ELSE IF frameImage =2 then
                x = x    
            ELSE IF frameImage =3 then
                x = x    
            ELSE IF frameImage = 4 then
                x = x -3
            ELSE IF frameImage = 5 then
                x = x -1                       
            END IF
         
     END IF
    end if
    IF x < -2 
        x = 30
        xp = xp -1
        cargaPantalla(0)
    END IF
    
END SUB
SUB inputQ()  
    'si ya estaba en secuencia de subir
    IF mCO =1 then        
        
        IF NOT alcanzoUnLimite() then
            yaImp = 0
            frameImage = frameImage +1
            'IF frameImage =2 or frameImage = 5 then
            IF frameImage = 1 then
               y = y -1
            ELSE IF frameImage = 2 then
               y = y
            ELSE IF frameImage = 3 then
               y = y -1 
            ELSE IF frameImage = 4 then
               y = y 
            END IF
            buidUnionLayer()
        ELSE
            mCOa = mCO
            mCO = 5
            frameImage = 0
            yaImp = 0
        END IF
        
        IF y < -3 
            y = 20
            yp = yp -1
    
           cargaPantalla(0)
       END IF
        
        
        
    'si estaba mirando en cualquier otra direccion 
    ELSE 
        mCOa = mCO
        mCO = 5
        yaImp = 0
        'frameImage = 3
        cambioOrientacion = 1              
    END IF              
END SUB
SUB inputA()
                 
         
        ' limite de la parte inferior de la pantalla PONERLO EN EL ARCHIVO DE LIMITES PANTALLA
        'orientacion de m.c  abajo 
            IF mCO <> 2 then
                frameImage = 0
                cambioOrientacion = 1
            END IF
            mCOa = mCO
            mCO = 2 
            IF NOT alcanzoUnLimite() THEN
                frameImage = frameImage +1
                yaImp = 0               
                IF frameImage = 1 then
                   y = y
                ELSE IF frameImage =2 then
                    y = y +1                      
                ELSE IF frameImage =3 then
                    y = y 
                ELSE IF frameImage =4 then
                    y = y +1
                END IF
                buidUnionLayer()  
            END IF
            'cambiar de pantalla
            IF y > 20 
                   y = -3
                   yp = yp +1
                   cargaPantalla(0)
            END IF
           
                        
          
END SUB
SUB inputG()
  'GRAB OBJECT
    
  DIM contador AS UINTEGER
  'DIM startAdr AS UINTEGER
  DIM adrObjectData AS UINTEGER
  DIM adrLineStart AS UINTEGER
  DIM valorX, valorY as BYTE
  DIM offset AS UINTEGER
  DIM screenX AS UBYTE  
  DIM screenY AS UBYTE
  'DIM tileValue AS UINTEGER
  DIM objectFirstPosition AS UINTEGER
  DIM lineQty  AS UBYTE
  DIM lineOffset AS UBYTE
  DIM n AS UBYTE
  'DIM noMoreLines AS UBYTE
  DIM linea AS UBYTE
  DIM incrementoY AS Uinteger
  DIM lineFirstPosition AS UINTEGER  
  DIM inTheMap AS UBYTE
  Dim adrLayer as uinteger
  Dim tilePosition as uinteger
  dim heightObject as ubyte
  dim lastYObject  as ubyte
  dim adrTargetLayer as uinteger
  dim row as ubyte
  dim column as ubyte
  dim objectAdr as uinteger
  contador = OBJ_MAP_HEADER
    
  objectAdr = getObjectInInventory()
  if objectAdr = 0  then
    WHILE contador < OBJ_START
     'cargo valorX y valorY con el x, y de un block
     inTheMap = peek(contador+1)
     IF inTheMap =1  then
       valorX   = peek(contador+2)
       valorY   = peek(contador+3)            
       IF (valorY = yp) AND (valorX = xp) THEN              
         screenX = PEEK(contador +4)  
         screenY = PEEK(contador +5)
         offset = PEEK(UINTEGER,contador + 10)
         heightObject     = getObjectHeight(contador)
         lastYObject      = screenY+heightObject-1
         IF  x >= screenX -2 and x <= screenX +1 then
           if lastYObject = y+6 then 
              POKE contador+1,0 
              adrObjectData = OBJ_START + offset
              objectFirstPosition = obtenerPosicionEnMapa(screenX,screenY)
              adrLineStart = adrObjectData
              'busca la layer del objeto
              adrTargetLayer   = searchLayerByY(lastYObject+1)
              BEEP 0.05, 5
              DO   
               adrLineStart = adrLineStart + CAST(UINTEGER,lineQty)
               lineQty    = PEEK(adrLineStart)
               IF lineQty <> 99 then     
                lineOffset = PEEK(adrLineStart+1)
                 FOR n = 0 TO lineQty - 1
                  lineFirstPosition = objectFirstPosition +(32*incrementoY)
                  tilePosition = lineFirstPosition + lineOffset + n
                  'borra al objeto del mapa de objetos
                  POKE  AdrScreenObjectsTileMap +tilePosition -1,0
                  setValueInBitMap(tilePosition, adrTargetLayer +1, 0)
                  row    = INT((tilePosition - 1) / 32)   ' división entera vía INT
                  column = ((tilePosition - 1) MOD 32) 
                  drawTileInScreenFromXY(column,row)
                 NEXT n
                incrementoY = incrementoY +1
                lineQty = lineQty+2
               ELSE
                EXIT DO
               END IF
              LOOP 
              buidUnionLayer()
              imprimeMcStanding() 
              refreshScreen()
              exit while
           END IF
         end if
      END IF     
    END IF      
    contador = contador + 15
  END WHILE
 end if   
    
END SUB

SUB inputD()
  DIM contador AS UINTEGER
  'DIM offset AS UINTEGER
  DIM screenX AS UBYTE  
  DIM screenY AS UBYTE 
  DIM inTheMap AS UBYTE
  dim heightObject  as ubyte
  dim lastYObject as ubyte
      
     
  contador = OBJ_MAP_HEADER
       
  WHILE contador < OBJ_START
      'cargo valorX y valorY con el x, y de un block
    inTheMap = peek(contador+1)
    IF inTheMap = 0 then
      
      
      
      heightObject     = getObjectHeight(contador)
      lastYObject      = y+4+heightObject-1
      if lastYObject <24 then
      
         POKE contador+1,1   'el estado pasa a ser presente en el mapa normal
         POKE contador+2, xp 'el x de pantalla del objeto se actualiza con el que tiene el MC
      POKE contador+3, yp 'el y de pantalla del objeto se actualiza con el que tiene el MC
      screenX = x+1       'la posicion x del objeto dentro de la pantalla se carga con el x del MC +1
      screenY = y +4      'object position y in screen se carga con y+4 del mc,object in his feets.
      POKE contador+4,screenX   'refresh the position x and y of the object in the objects table
      POKE contador+5,screenY
      bEEP 0.05, -2
        drawObject(contador, screenX,screenY)
        buidUnionLayer()
        refreshScreen()      
        
      else 
        BEEP 0.1,10: BEEP 0.1,5: BEEP 0.1,0
      end if
      exit while
    END IF
     
    contador = contador + 15  'change to new section (new object) the object header.
  END WHILE
END SUB

SUB inputU()
  

 dim screenYFinal as byte
 dim screenXFinal as byte
 dim xFinal as ubyte
 dim yFinal as ubyte
 dim objectHeight as ubyte
 dim objectAddress as uinteger
 dim objectLastY as ubyte
 dim objectType as ubyte
 dim objectId as ubyte
 dim tiempoActual as long
 
 objectAddress  = getObjectInInventory()

 if objectAddress then 
   screenXFinal = peek(objectAddress + 6)
   screenYFinal = peek(objectAddress + 7)
    if screenYFinal = yp then
     if screenXFinal = xp then
      xFinal = peek(objectAddress +8)
      yFinal = peek(objectAddress +9)
      if x >= xFinal-3 and x <= xFinal then
        objectHeight = peek(objectAddress +12)
        objectLastY = yFinal +objectHeight-1
        objectType = peek(objectAddress + 13)
        objectId   = peek(objectAddress)
        
        if objectLastY <= y +7 and objectLastY >= y-1 then
         POKE objectAddress+1,2   'el estado pasa a ser lugar definitivo
         POKE objectAddress+2, xp 'el x de pantalla del objeto se actualiza con el que tiene el MC
         POKE objectAddress+3, yp 'el y de pantalla del objeto se actualiza con el que tiene el MC
         POKE objectAddress+4,xFinal 'refresh the position x and y of the object in Obj table
         POKE objectAddress+5,yFinal
         
         BEEP 0.05,10: BEEP 0.05,15: BEEP 0.05,20: BEEP 0.05,25
         if objectType <> 1 then
            drawObjectInFinalPosition(objectAddress,xFinal,yFinal)
            tiempoActual = t()
            if objectId = 8 then                
              compraPececito()
              TimerBurbujaDelivery = tiempoActual + tiempo_entrega_burbuja
              statusDeliveryBurbuja = 1
            end if
            buidUnionLayer()
            refreshScreen()
         end if
         
         'check for game check time and objects.If return 2 it means it end
         'for objects
         if checkForGameEnd(1) = 2 then
            GameStatus = 2
         end if
      end if
     end if
    end if
   end if
 else 
    inputG()
 end if
END SUB   
SUB inputT()
  dim estado as ubyte
   SetSlot3(6)
   IF statusRepAy = 1 then
      SetSlot3(0)
      ejecutaSonidoAy(reproductor_en_pause)
      estado = 1
   end if


showInfoScreen()
if estado = 1 then
           
    ejecutaSonidoAy(reproductor_en_play)
end if 
END SUB  

SUB printMc(modo as ubyte)  
  IF mCO = 0  then 'imprime a burt parado
    IF  yaImp = 0 then   'lo imprime solo si no fue impreso anteriormente
     'waitretrace
     'EsperaImpresion(y) 
     
     imprimeMcStanding()    
     if modo = 0 then
      refreshScreen()
      yaImp = 1
     end if
     
    ELSE
     mcMoveEyes()
     mcMoveMouth()
    END IF 
  ELSE if mCO = 1 then
        IF yaImp = 0 then           
            'EsperaImpresion(y)   
            imprimeMcUp()
            refreshScreen()
            yaImp =1
        END IF  
  ELSE if mCO = 2 then
        IF yaImp = 0 then           
            'EsperaImpresion(y)   
            imprimeMcDown()
            refreshScreen()
            yaImp =1
        END IF  
  ELSE IF mCO = 4 then
        IF yaImp = 0 then           
            'EsperaImpresion(y)   
            imprimeMcRight()
            refreshScreen()
            yaImp =1
        END IF  
  ELSE IF mCO =3  then
        IF yaImp = 0 then
            'EsperaImpresion(y)  
            imprimeMcLeft()
            refreshScreen()
            yaImp = 1
        END IF  
  ELSE if mCO = 5 then
     IF yaImp = 0 then
        'EsperaImpresion(y)  
        imprimeMcBack()
        refreshScreen()
        
       yaImp = 1
     END IF  
  END IF
   
  END SUB

  
SUB mcMoveEyes()
    
    IF estadoOjos = 0 THEN
    
        imprimoLineaSprite(x +2,y,2,mc_eyes_s, mc_eyes_a)
        'putChars(x+3,y,2,1,mc_eyes_s)'
        'PaintData(x+3,y,2,1,mc_eyes_a)
        
    ELSEIF estadoOjos = 1 THEN
        imprimoLineaSprite(x +2,y,2,mc_eyes_s+32, mc_eyes_a+4)
       'putChars(x+3,y,2,1,mc_eyes_s+32)
       'PaintData(x+3,y,2,1,mc_eyes_a+4)  
       
    ELSEIF estadoOjos = 2 THEN   
         imprimoLineaSprite(x +2,y,2,mc_eyes_s, mc_eyes_a)
         'putChars(x+3,y,2,1,mc_eyes_s)
         'PaintData(x+3,y,2,1,mc_eyes_a)
    ELSEIF estadoOjos = 3 THEN
        imprimoLineaSprite(x +2,y,2,mc_eyes_s+48, mc_eyes_a+6)
        'putChars(x+3,y,2,1,mc_eyes_s+48)
        'PaintData(x+3,y,2,1,mc_eyes_a+6)
    ELSEIF estadoOjos = 4 THEN
        imprimoLineaSprite(x +2,y,2,mc_eyes_s, mc_eyes_a)
        'putChars(x+3,y,2,1,mc_eyes_s)
        'PaintData(x+3,y,2,1,mc_eyes_a)
    ELSEIF estadoOjos = 5 THEN
        imprimoLineaSprite(x +2,y,2,mc_eyes_s+16, mc_eyes_a+2)
        'putChars(x+3,y,2,1,mc_eyes_s+16)
        'PaintData(x+3,y,2,1,mc_eyes_a+2)    
    END IF
    
   
    IF reachedTime(2,70) THEN
        estadoOjos = estadoOjos +1
        refreshScreen()
        IF estadoOjos = 6 THEN
            estadoOjos = 0
        END IF
    END IF
END SUB

SUB mcMoveMouth()
    
    IF estadoBoca = 0 THEN
        imprimoLineaSprite(x +2,y+1,2,mc_mouth_s, mc_mouth_a)
        'putChars(x+3, y+1,2,1,mc_mouth_s)
        'PaintData(x+3,y+1,2,1,mc_mouth_a)
    ELSE IF estadoBoca = 1 THEN
       imprimoLineaSprite(x +2,y+1,2,mc_mouth_s+32, mc_mouth_a+4)
       'putChars(x+3,y+1,2,1,mc_mouth_s+32)
       'PaintData(x+3,y+1,2,1,mc_mouth_a+4)       
    ELSE IF estadoBoca = 2 THEN
         imprimoLineaSprite(x +2,y+1,2,mc_mouth_s+16, mc_mouth_a+2)
         'putChars(x+3,y+1,2,1,mc_mouth_s+16)
         'PaintData(x+3,y+1,2,1,mc_mouth_a+2)
    ELSEIF estadoBoca = 3 THEN
        imprimoLineaSprite(x +2,y+1,2,mc_mouth_s+32, mc_mouth_a+4)
        'putChars(x+3,y+1,2,1,mc_mouth_s+32)
        'PaintData(x+3,y+1,2,1,mc_mouth_a+4)
     
    END IF
    
   
    IF reachedTime(3,85) THEN
        refreshScreen()
        estadoBoca = estadoBoca +1
        IF estadoBoca = 3 THEN
            estadoBoca = 0
        END IF
    END IF
END SUB




/' imprime bert comenzando en el angulo superior izquierdo

Se imprime linea por linea solo los caracteres que son necesarios.
'/
SUB  imprimeMcStanding()     
     'print at 0,25; "x = "; x; " " : 'print at 1,25; "y = "; y;" " 
    MemCopy(mc_std_p,@coorSprites,21)
   
    imprimoLineasSprite(7,0,0,mc_std_s, mc_std_a) 
    
     IF mCOa = 1 then
        imprimoCaracterMapa(x+1,y+7)
        imprimoCaracterMapa(x+4,y+7)
     END IF
     /'para que no queden pedacitos cuando voy contra los limites laterales de izquierda'/ 
     IF mCOa = 3 then
        imprimoCaracterMapa(x+1,y+7)
        imprimoCaracterMapa(x+4,y+7)
     END IF
     /'para que no queden pedacitos cuando voy contra los limites laterales de izquierda'/
     IF mCOa = 4 then
        imprimoCaracterMapa(x+1,y+7)
        imprimoCaracterMapa(x+4,y+7)
     END IF
    
END SUB

SUB  imprimeMcDown()   
  DIM n AS BYTE
    IF frameImage = 1 then 
        MemCopy(mc_wd1_p,@coorSprites,21)
        imprimoLineasSprite(7,0,0,mc_wd1_s, mc_wd1_a) 
    IF mCOa = 1 then  
         imprimoCaracterMapa(x+1,y+7) 
        imprimoCaracterMapa(x+4,y+7)
    END IF    
    
        
    ELSE IF frameImage = 2 then 
        
        MemCopy(mc_wd2_p,@coorSprites,21)
        imprimoLineasSprite(7,0,0,mc_wd2_s, mc_wd2_a) 
        FOR n = x TO x + 3
            imprimoCaracterMapa(n,y-1)
        NEXT n
        
            imprimoCaracterMapa(x+4,y)
            imprimoCaracterMapa(x+5,y+1)

        
    ELSE IF frameImage = 3 then 
        
        MemCopy(mc_wd3_p,@coorSprites,21)
        imprimoLineasSprite(7,0,0,mc_wd3_s, mc_wd3_a) 
        FOR n = x TO x + 8
            imprimoCaracterMapa(n,y-1)
        NEXT n
        
    ELSE IF frameImage = 4 then 
        
        MemCopy(mc_wd4_p,@coorSprites,21)
        imprimoLineasSprite(7,0,0,mc_wd4_s, mc_wd4_a) 
        FOR n = x+2 TO x + 5
           imprimoCaracterMapa(n,y-1)
        NEXT n
        imprimoCaracterMapa(x+1,y)                   
        imprimoCaracterMapa(x,y+1)
        frameImage =0
    END IF
    
    
END SUB
SUB imprimeMcUp() 
  IF frameImage = 1 then 
        
        MemCopy(mc_wu1_p,@coorSprites,21)
        imprimoLineasSprite(7,0,0,mc_wu1_s, mc_wu1_a) 
        
          
             imprimoCaracterMapa(x,y+5)
             imprimoCaracterMapa(x+2,y+7)
             imprimoCaracterMapa(x+3,y+7)
             imprimoCaracterMapa(x+4,y+7)
             imprimoCaracterMapa(x+5,y+5)
          
         
    
        
  ELSE if frameImage = 2 then 
        MemCopy(mc_wu2_p,@coorSprites,24)
        imprimoLineasSprite(8,0,0,mc_wu2_s, mc_wu2_a) 
     
       
        imprimoCaracterMapa(x+1,y+7)
      
        
  ELSE if frameImage = 3 then 
        MemCopy(mc_wu3_p,@coorSprites,21)
        imprimoLineasSprite(7,0,0,mc_wu3_s, mc_wu3_a)   
        
        imprimoCaracterMapa(x+1,y+7)
        imprimoCaracterMapa(x+2,y+7)
        imprimoCaracterMapa(x+3,y+7)
        imprimoCaracterMapa(x+5,y+5)
        imprimoCaracterMapa(x,y+5)
        
  ELSE if frameImage = 4 then 
        MemCopy(mc_wu4_p,@coorSprites,21)
        imprimoLineasSprite(7,0,0,mc_wu4_s, mc_wu4_a)
        imprimoCaracterMapa(x+4,y+7)
        frameImage =0
   END IF
END SUB

SUB imprimeMcRight()
 /'
 frame1: Pata pantalla levantada y de color diferente, pata fondo bien vertical , contraida, x = +1
frame2: Pata pantalla levantada , mas abajo y de mismo color, 
dentro del frame el dibujo se mueve para adelante, el ojo se adelanta  un carácter, y la pata fondo es como que se estira x =0
frame3: Pata pantalla pisando solida delante del cuerpo,pata fondo levemente levantadada atrás del cuerpo, ojo se mantiene en el mismo carácter que el frame 2, x=+1,
frame4: pata pantalla totalmente apoyada, pata fondo no se ve ,ambas patas a la altura del cuerpo. el ojo retrocede un carácter. x = +2 
El mas 2 de x es para 1 recuperar el retroceso del ojo y 2 para adelantar una posición de ojo , que es lo que se hace en todos los frames finalmente
frame5: pata pantalla un poco mas atrasada que antes, pata fondo por adelante timidamente apareciendo, mano abajo x = +1
frame6: pata pantalla totalmente atrasada, pata fondo por adelante mas adelantada apareciendo mas, mano abajo x = +1
frame7: pata pantalla totalmente levantada(vertical), pata fondo apollada vertical, mano arriba x = +1
 '/
IF frameImage = 1 then                     
    IF cambioOrientacion = 1 then                 
       cambioOrientacion = 0         
    END IF         
    MemCopy(mc_sup_wr1_p,@coorSprites,12)
    imprimoLineasSprite(4,1,0,mc_sup_wr1_s, mc_sup_wr1_a)
    
    MemCopy(mc_inf_wr1_p,@coorSprites,9)
    imprimoLineasSprite(3,1,4,mc_inf_wr1_s, mc_inf_wr1_a)
    /' Si justo antes de ir a la derecha iba hacia arriba limpio resto que queda'/
    
    /' Si justo antes de ir a la derecha iba hacia arriba limpio resto que queda'/
    IF mCOa = 1 then
        imprimoCaracterMapa(x+1,y+7) 
        imprimoCaracterMapa(x+4,y+7)
    END if

ELSE if (frameImage =2 ) then
    MemCopy(mc_sup_wr1_p,@coorSprites,12)
    imprimoLineasSprite(4,2,0,mc_sup_wr1_s, mc_sup_wr1_a)
    MemCopy(mc_inf_wr2_p,@coorSprites,9)
    imprimoLineasSprite(3,1,4,mc_inf_wr2_s, mc_inf_wr2_a)    
ELSE if (frameImage = 3) then
    MemCopy(mc_sup_wr1_p,@coorSprites,12)
    imprimoLineasSprite(4,2,0,mc_sup_wr1_s, mc_sup_wr1_a)
    MemCopy(mc_inf_wr3_p,@coorSprites,9)
    imprimoLineasSprite(3,2,4,mc_inf_wr3_s, mc_inf_wr3_a) 
    
    
ELSE IF (frameImage =4 ) then
    MemCopy(mc_sup_wr2_p,@coorSprites,12)
    imprimoLineasSprite(4,1,0,mc_sup_wr2_s, mc_sup_wr2_a)
    MemCopy(mc_inf_wr4_p,@coorSprites,9)
    imprimoLineasSprite(3,1,4,mc_inf_wr4_s, mc_inf_wr4_a) 
ELSE IF (frameImage =5 ) then
    MemCopy(mc_sup_wr2_p,@coorSprites,12)
    imprimoLineasSprite(4,1,0,mc_sup_wr2_s, mc_sup_wr2_a)
    MemCopy(mc_inf_wr5_p,@coorSprites,9)
    imprimoLineasSprite(3,1,4,mc_inf_wr5_s, mc_inf_wr5_a)
ELSE IF (frameImage =6 ) then
    MemCopy(mc_sup_wr2_p,@coorSprites,12)
    imprimoLineasSprite(4,1,0,mc_sup_wr2_s, mc_sup_wr2_a)
    MemCopy(mc_inf_wr6_p,@coorSprites,9)
    imprimoLineasSprite(3,1,4,mc_inf_wr6_s, mc_inf_wr6_a)               
    frameImage =0         
END IF
      
     
END SUB


SUB imprimeMcLeft()
  
  IF frameImage = 1 then
  
     IF cambioOrientacion = 1 then 
        cambioOrientacion = 0
      END IF
     
    MemCopy(mc_sup_wl1_p,@coorSprites,12)
    imprimoLineasSprite(4,-1,0,mc_sup_wl1_s, mc_sup_wl1_a)
    
    MemCopy(mc_inf_wl1_p,@coorSprites,9)
    imprimoLineasSprite(3,1,4,mc_inf_wl1_s, mc_inf_wl1_a)
     /' Si justo antes de ir a la izquierda iba hacia arriba limpio resto que queda'/  
     
    IF mCOa = 1 then
        imprimoCaracterMapa(x+2,y+7) 
        imprimoCaracterMapa(x+5,y+7)
    END IF

    
  ELSE IF frameImage = 2 then
    MemCopy(mc_sup_wl1_p,@coorSprites,12)
    imprimoLineasSprite(4,-2,0,mc_sup_wl1_s, mc_sup_wl1_a)
    
    MemCopy(mc_inf_wl2_p,@coorSprites,9)
    imprimoLineasSprite(3,0,4,mc_inf_wl2_s, mc_inf_wl2_a)
    
  ELSE IF frameImage = 3 then
    
    MemCopy(mc_sup_wl1_p,@coorSprites,12)
    imprimoLineasSprite(4,-3,0,mc_sup_wl1_s, mc_sup_wl1_a)   
    MemCopy(mc_inf_wl3_p,@coorSprites,9)
    imprimoLineasSprite(3,0,4,mc_inf_wl3_s, mc_inf_wl3_a)  
  ELSE IF frameImage =4 then   
       MemCopy(mc_sup_wl2_p,@coorSprites,12)
       imprimoLineasSprite(4,-1,0,mc_sup_wl2_s, mc_sup_wl2_a) 
       MemCopy(mc_inf_wl4_p,@coorSprites,9)
       imprimoLineasSprite(3,1,4,mc_inf_wl4_s, mc_inf_wl4_a)
  ELSE IF frameImage =5  then   
        MemCopy(mc_sup_wl2_p,@coorSprites,12)
        imprimoLineasSprite(4,-1,0,mc_sup_wl2_s, mc_sup_wl2_a)
        MemCopy(mc_inf_wl5_p,@coorSprites,9)
        imprimoLineasSprite(3,1,4,mc_inf_wl5_s, mc_inf_wl5_a)
  ELSE IF frameImage = 6 then  
       MemCopy(mc_sup_wl2_p,@coorSprites,12)
        imprimoLineasSprite(4,-2,0,mc_sup_wl2_s, mc_sup_wl2_a)
        MemCopy(mc_inf_wl6_p,@coorSprites,9)
        imprimoLineasSprite(3,1,4,mc_inf_wl6_s, mc_inf_wl6_a) 
        frameImage =0
  END IF
END SUB




SUB imprimeMcBack()  
   dim n AS UINTEGER
      MemCopy(mc_std_back_p,@coorSprites,21)
      imprimoLineasSprite(7,0,0,mc_std_back_s, mc_std_back_a)
       
            FOR n = x TO x + 8
                imprimoCaracterMapa(n,y+7)
            NEXT n
       
END SUB


SUB  imprimeWife(x as ubyte, y as ubyte)     
      
    MemCopy(wife_p,@coorSprites,24)
    imprimoLineasSpriteGeneral(8,x,y,wife_s, wife_a) 
END SUB

sub paintSuitcase(x as ubyte, y as ubyte)
     MemCopy(suitcase_p,@coorSprites,24)
    imprimoLineasSpriteGeneral(8,x,y,suitcase_s, suitcase_a)
end sub

sub paintFishTank(x as ubyte, y as ubyte)
     putChars(x,y ,4,1,paletaO_s + 21*8)
    PaintData(x,y,4,1,paletaO_a+ CAST(UINTEGER,21) )
    putChars(x,y+1 ,4,1,paletaO_s + 25*8)
    PaintData(x,y+1,4,1,paletaO_a+ CAST(UINTEGER,25) )
    putChars(x,y+2,4,1,paletaO_s + 29*8)
    PaintData(x,y+2,4,1,paletaO_a+ CAST(UINTEGER,29) )
end sub

sub paintMcSup(x as ubyte, y as ubyte)
    MemCopy(mc_sup_wr2_p,@coorSprites,24)
    imprimoLineasSpriteGeneral(4,x,y,mc_sup_wr2_s, mc_sup_wr2_a)

'    putChars(x+1,y ,1,1,mc_sup_wr2_s )
'    PaintData(x+1,y,1,1,mc_sup_wr2_a )
'    putChars(x,y+1 ,3,1,mc_sup_wr2_s+8 )
'    PaintData(x,y+1,3,1,mc_sup_wr2_a +1)
end sub

sub paintMcFoot(x as ubyte, y as ubyte)
    MemCopy(foot_p,@coorSprites,6)
    imprimoLineasSpriteGeneral(2,x,y,foot_s,foot_a)

'    putChars(x+1,y ,1,1,mc_sup_wr2_s )
'    PaintData(x+1,y,1,1,mc_sup_wr2_a )
'    putChars(x,y+1 ,3,1,mc_sup_wr2_s+8 )
'    PaintData(x,y+1,3,1,mc_sup_wr2_a +1)
end sub

sub paintSleepEye(x as ubyte, y as ubyte)
    MemCopy(sleep_eye_p,@coorSprites,3)
    imprimoLineasSpriteGeneral(1,x,y,sleep_eye_s,sleep_eye_a)

end sub

sub paintZzz(x as ubyte, y as ubyte)
    MemCopy(zzz_p,@coorSprites,9)
    imprimoLineasSpriteGeneral(3,x,y,zzz_s,zzz_a)

end sub

sub paintEye(x as ubyte, y as ubyte)
    MemCopy(mc_sup_wr2_p,@coorSprites,3)
    imprimoLineasSpriteGeneral(1,x,y,mc_sup_wr2_s, mc_sup_wr2_a)

'    putChars(x+1,y ,1,1,mc_sup_wr2_s )
'    PaintData(x+1,y,1,1,mc_sup_wr2_a )
'    putChars(x,y+1 ,3,1,mc_sup_wr2_s+8 )
'    PaintData(x,y+1,3,1,mc_sup_wr2_a +1)
end sub
